package com.cskaoyan.wordmemorize.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cskaoyan.wordmemorize.dao.entity.UserFavoriteDO;
import com.cskaoyan.wordmemorize.dao.entity.VocChapterDO;
import com.cskaoyan.wordmemorize.dao.entity.VocDO;
import com.cskaoyan.wordmemorize.dto.app.DisplayUserVocSentenceDTO;
import com.cskaoyan.wordmemorize.request.PageRequest;
import com.cskaoyan.wordmemorize.request.VocPageRequest;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface VocMapper extends BaseMapper<VocDO> {

    List<VocDO> getVocDOs(VocPageRequest pageQuery);

    Long getCount(VocPageRequest pageQuery);

//    List<VocDO> selectVocAndMean(List<Long> collect);


    List<VocDO> getVocsOfUserBook(@Param("userId") Long userId, @Param("bookId") Long bookId
            , @Param("offset") Integer offset, @Param("limit") Integer limit);

    List<VocChapterDO> getChapterVocsOfUserBook(@Param("userId") Long userId, @Param("bookId") Long bookId
            , @Param("offset") Integer offset, @Param("limit") Integer limit);

    VocDO getVocDetail(@Param("userId") Long userId,@Param("vocId") Long vocId);


    Integer getSelectedCountInBook(@Param("userId") Long userId,@Param("bookId") Long bookId);

    Integer getAllVocsOfUserBook(@Param("userId") Long userId,@Param("bookId") Long bookId);

    List<DisplayUserVocSentenceDTO> getUserVocExampleSentences(@Param("pageRequest") PageRequest pageRequest, @Param("userId") Long userId);

    UserFavoriteDO getUserFavoriteDO(UserFavoriteDO vocDO);

    void updateUserFavoriteDO(UserFavoriteDO userFavoriteDO);

//    List<UserVocExampleSentenceDO> getUserVocExampleSentence(Long userId, Long vocId);
}
